home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / rockola.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  45KB  |  1,187 lines

  1. /***************************************************************************
  2.  
  3. Vanguard memory map (preliminary)
  4.  
  5. 0000-03ff RAM
  6. 0400-07ff Video RAM 1
  7. 0800-0bff Video RAM 2
  8. 0c00-0fff Color RAM (3 bits for video RAM 1 and 3 bits for video RAM 2)
  9. 1000-1fff Character generator RAM
  10. 4000-bfff ROM
  11.  
  12. read:
  13. 3104      IN0
  14. 3105      IN1
  15. 3106      DSW ??
  16. 3107      IN2
  17.  
  18. write
  19. 3100      Sound Port 0
  20. 3101      Sound Port 1
  21. 3103      bit 7 = flip screen
  22. 3200      y scroll register
  23. 3300      x scroll register
  24.  
  25. Fantasy and Nibbler memory map (preliminary)
  26.  
  27. 0000-03ff RAM
  28. 0400-07ff Video RAM 1
  29. 0800-0bff Video RAM 2
  30. 0c00-0fff Color RAM (3 bits for video RAM 1 and 3 bits for video RAM 2)
  31. 1000-1fff Character generator RAM
  32. 3000-bfff ROM
  33.  
  34. read:
  35. 2104      IN0
  36. 2105      IN1
  37. 2106      DSW
  38. 2107      IN2
  39.  
  40. write
  41. 2000-2001 To the HD46505S video controller
  42. 2100      Sound Port 0
  43. 2101      Sound Port 1
  44. 2103      bit 7 = flip screen
  45.           bit 4-6 = music 2
  46.           bit 3 = char bank selector
  47.           bit 0-2 = background color
  48. 2200      y scroll register
  49. 2300      x scroll register
  50.  
  51. Interrupts: VBlank causes an IRQ. Coin insertion causes a NMI.
  52.  
  53. Pioneer Balloon memory map (preliminary)
  54.  
  55. 0000-03ff RAM           IC13 cpu
  56. 0400-07ff Video RAM 1  IC67 video
  57. 0800-0bff Video RAM 2  ???? video
  58. 0c00-0fff Color RAM    IC68 (3 bits for VRAM 1 and 3 bits for VRAM 2)
  59. 1000-1fff RAM           ???? Character generator
  60. 3000-3fff ROM 4/5       IC12
  61. 4000-4fff ROM 1        IC07
  62. 5000-5fff ROM 2        IC08
  63. 6000-6fff ROM 3        IC09
  64. 7000-7fff ROM 4        IC10
  65. 8000-8fff ROM 5        IC14
  66. 9000-9fff ROM 6        IC15
  67. read:
  68. b104      IN0
  69. b105      IN1
  70. b106      DSW
  71. b107      IN2
  72.  
  73. write
  74. b000      Sound Port 0
  75. b001      Sound Port 1
  76. b100      ????
  77. b103      bit 7 = flip screen
  78.           bit 4-6 = music 2
  79.           bit 3 = char bank selector
  80.           bit 0-2 = background color
  81. b106      ????
  82. b200      y scroll register
  83. b300      x scroll register
  84.  
  85. Interrupts: VBlank causes an IRQ. Coin insertion causes a NMI.
  86.  
  87. ***************************************************************************/
  88.  
  89. #include "driver.h"
  90. #include "vidhrdw/generic.h"
  91. #include "vidhrdw/crtc6845.h"
  92.  
  93.  
  94. extern unsigned char *rockola_videoram2;
  95. extern unsigned char *rockola_characterram;
  96. extern unsigned char *rockola_scrollx,*rockola_scrolly;
  97.  
  98. WRITE_HANDLER( satansat_b002_w );
  99. WRITE_HANDLER( satansat_backcolor_w );
  100. void satansat_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  101. void satansat_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  102. WRITE_HANDLER( satansat_characterram_w );
  103.  
  104. WRITE_HANDLER( rockola_characterram_w );
  105. WRITE_HANDLER( rockola_flipscreen_w );
  106. void rockola_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  107. void rockola_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  108.  
  109. WRITE_HANDLER( satansat_sound0_w );
  110. WRITE_HANDLER( satansat_sound1_w );
  111. WRITE_HANDLER( vanguard_sound0_w );
  112. WRITE_HANDLER( vanguard_sound1_w );
  113. WRITE_HANDLER( fantasy_sound0_w );
  114. WRITE_HANDLER( fantasy_sound1_w );
  115. WRITE_HANDLER( fantasy_sound2_w );
  116. int rockola_sh_start(const struct MachineSound *msound);
  117. void rockola_sh_update(void);
  118.  
  119.  
  120.  
  121. static struct MemoryWriteAddress sasuke_writemem[] =
  122. {
  123.     { 0x0000, 0x03ff, MWA_RAM },
  124.     { 0x0400, 0x07ff, MWA_RAM, &rockola_videoram2 },
  125.     { 0x0800, 0x0bff, videoram_w, &videoram, &videoram_size },
  126.     { 0x0c00, 0x0fff, colorram_w, &colorram },
  127.     { 0x1000, 0x1fff, rockola_characterram_w, &rockola_characterram },
  128.     { 0x4000, 0x97ff, MWA_ROM },
  129.     { 0x3000, 0x3000, crtc6845_address_w },
  130.     { 0x3001, 0x3001, crtc6845_register_w },
  131.     { 0xb002, 0xb002, satansat_b002_w },    /* flip screen & irq enable */
  132.     { 0xb003, 0xb003, satansat_backcolor_w },
  133.     { -1 }    /* end of table */
  134. };
  135.  
  136. static struct MemoryReadAddress satansat_readmem[] =
  137. {
  138.     { 0x0000, 0x1fff, MRA_RAM },
  139.     { 0x4000, 0x97ff, MRA_ROM },
  140.     { 0xb004, 0xb004, input_port_0_r }, /* IN0 */
  141.     { 0xb005, 0xb005, input_port_1_r }, /* IN1 */
  142.     { 0xb006, 0xb006, input_port_2_r }, /* DSW */
  143.     { 0xb007, 0xb007, input_port_3_r }, /* IN2 */
  144.     { 0xf800, 0xffff, MRA_ROM },
  145.     { -1 }    /* end of table */
  146. };
  147.  
  148. static struct MemoryWriteAddress satansat_writemem[] =
  149. {
  150.     { 0x0000, 0x03ff, MWA_RAM },
  151.     { 0x0400, 0x07ff, MWA_RAM, &rockola_videoram2 },
  152.     { 0x0800, 0x0bff, videoram_w, &videoram, &videoram_size },
  153.     { 0x0c00, 0x0fff, colorram_w, &colorram },
  154.     { 0x1000, 0x1fff, rockola_characterram_w, &rockola_characterram },
  155.     { 0x4000, 0x97ff, MWA_ROM },
  156.     { 0x3000, 0x3000, crtc6845_address_w },
  157.     { 0x3001, 0x3001, crtc6845_register_w },
  158.     { 0xb000, 0xb000, satansat_sound0_w },
  159.     { 0xb001, 0xb001, satansat_sound1_w },
  160.     { 0xb002, 0xb002, satansat_b002_w },    /* flip screen & irq enable */
  161.     { 0xb003, 0xb003, satansat_backcolor_w },
  162.     { -1 }    /* end of table */
  163. };
  164.  
  165. static struct MemoryReadAddress vanguard_readmem[] =
  166. {
  167.     { 0x0000, 0x1fff, MRA_RAM },
  168.     { 0x3104, 0x3104, input_port_0_r },    /* IN0 */
  169.     { 0x3105, 0x3105, input_port_1_r },    /* IN1 */
  170.     { 0x3106, 0x3106, input_port_2_r },    /* DSW */
  171.     { 0x3107, 0x3107, input_port_3_r },    /* IN2 */
  172.     { 0x4000, 0xbfff, MRA_ROM },
  173.     { 0xf000, 0xffff, MRA_ROM },    /* for the reset / interrupt vectors */
  174.     { -1 }    /* end of table */
  175. };
  176.  
  177. static struct MemoryWriteAddress vanguard_writemem[] =
  178. {
  179.     { 0x0000, 0x03ff, MWA_RAM },
  180.     { 0x0400, 0x07ff, MWA_RAM, &rockola_videoram2 },
  181.     { 0x0800, 0x0bff, videoram_w, &videoram, &videoram_size },
  182.     { 0x0c00, 0x0fff, colorram_w, &colorram },
  183.     { 0x1000, 0x1fff, rockola_characterram_w, &rockola_characterram },
  184.     { 0x3000, 0x3000, crtc6845_address_w },
  185.     { 0x3001, 0x3001, crtc6845_register_w },
  186.     { 0x3100, 0x3100, vanguard_sound0_w },
  187.     { 0x3101, 0x3101, vanguard_sound1_w },
  188. //    { 0x3102, 0x3102, },    /* TODO: music channels #0 and #1 volume */
  189.     { 0x3103, 0x3103, rockola_flipscreen_w },
  190.     { 0x3200, 0x3200, MWA_RAM, &rockola_scrolly },
  191.     { 0x3300, 0x3300, MWA_RAM, &rockola_scrollx },
  192.     { 0x4000, 0xbfff, MWA_ROM },
  193.     { -1 }    /* end of table */
  194. };
  195.  
  196. static struct MemoryReadAddress fantasy_readmem[] =
  197. {
  198.     { 0x0000, 0x1fff, MRA_RAM },
  199.     { 0x2104, 0x2104, input_port_0_r },    /* IN0 */
  200.     { 0x2105, 0x2105, input_port_1_r },    /* IN1 */
  201.     { 0x2106, 0x2106, input_port_2_r },    /* DSW */
  202.     { 0x2107, 0x2107, input_port_3_r },    /* IN2 */
  203.     { 0x3000, 0xbfff, MRA_ROM },
  204.     { 0xfffa, 0xffff, MRA_ROM },
  205.     { -1 }    /* end of table */
  206. };
  207.  
  208. static struct MemoryWriteAddress fantasy_writemem[] =
  209. {
  210.     { 0x0000, 0x03ff, MWA_RAM },
  211.     { 0x0400, 0x07ff, MWA_RAM, &rockola_videoram2 },
  212.     { 0x0800, 0x0bff, videoram_w, &videoram, &videoram_size },
  213.     { 0x0c00, 0x0fff, colorram_w, &colorram },
  214.     { 0x1000, 0x1fff, rockola_characterram_w, &rockola_characterram },
  215.     { 0x2000, 0x2000, crtc6845_address_w },
  216.     { 0x2001, 0x2001, crtc6845_register_w },
  217.     { 0x2100, 0x2100, fantasy_sound0_w },
  218.     { 0x2101, 0x2101, fantasy_sound1_w },
  219. //    { 0x2102, 0x2102, },    /* TODO: music channels #0 and #1 volume */
  220.     { 0x2103, 0x2103, fantasy_sound2_w },    /* + flipscreen, gfx bank, bg color */
  221.     { 0x2200, 0x2200, MWA_RAM, &rockola_scrolly },
  222.     { 0x2300, 0x2300, MWA_RAM, &rockola_scrollx },
  223.     { 0x3000, 0xbfff, MWA_ROM },
  224.     { -1 }    /* end of table */
  225. };
  226.  
  227. static struct MemoryReadAddress pballoon_readmem[] =
  228. {
  229.     { 0x0000, 0x1fff, MRA_RAM },
  230.     { 0x3000, 0x9fff, MRA_ROM },
  231.     { 0xb104, 0xb104, input_port_0_r },    /* IN0 */
  232.     { 0xb105, 0xb105, input_port_1_r },    /* IN1 */
  233.     { 0xb106, 0xb106, input_port_2_r },    /* DSW */
  234.     { 0xb107, 0xb107, input_port_3_r },    /* IN2 */
  235.     { 0xfffa, 0xffff, MRA_ROM },
  236.     { -1 }    /* end of table */
  237. };
  238.  
  239. static struct MemoryWriteAddress pballoon_writemem[] =
  240. {
  241.     { 0x0000, 0x03ff, MWA_RAM },
  242.     { 0x0400, 0x07ff, MWA_RAM, &rockola_videoram2 },
  243.     { 0x0800, 0x0bff, videoram_w, &videoram, &videoram_size },
  244.     { 0x0c00, 0x0fff, colorram_w, &colorram },
  245.     { 0x1000, 0x1fff, rockola_characterram_w, &rockola_characterram },
  246.     { 0x3000, 0x9fff, MWA_ROM },
  247.     { 0xb000, 0xb000, crtc6845_address_w },
  248.     { 0xb001, 0xb001, crtc6845_register_w },
  249.     { 0xb100, 0xb100, fantasy_sound0_w },
  250.     { 0xb101, 0xb101, fantasy_sound1_w },
  251. //    { 0xb102, 0xb102, },    /* TODO: music channels #0 and #1 volume */
  252.     { 0xb103, 0xb103, fantasy_sound2_w },    /* + flipscreen, gfx bank, bg color */
  253.     { 0xb200, 0xb200, MWA_RAM, &rockola_scrolly },
  254.     { 0xb300, 0xb300, MWA_RAM, &rockola_scrollx },
  255.     { -1 }    /* end of table */
  256. };
  257.  
  258.  
  259.  
  260. static int satansat_interrupt(void)
  261. {
  262.     if (cpu_getiloops() != 0)
  263.     {
  264.         /* user asks to insert coin: generate a NMI interrupt. */
  265.         if (readinputport(3) & 1)
  266.             return nmi_interrupt();
  267.         else return ignore_interrupt();
  268.     }
  269.     else return interrupt();    /* one IRQ per frame */
  270. }
  271.  
  272. static int rockola_interrupt(void)
  273. {
  274.     if (cpu_getiloops() != 0)
  275.     {
  276.         /* user asks to insert coin: generate a NMI interrupt. */
  277.         if (readinputport(3) & 3)
  278.             return nmi_interrupt();
  279.         else return ignore_interrupt();
  280.     }
  281.     else return interrupt();    /* one IRQ per frame */
  282. }
  283.  
  284.  
  285.  
  286. /* Derived from Zarzon. Might not reflect the actual hardware. */
  287. INPUT_PORTS_START( sasuke )
  288.     PORT_START  /* IN0 */
  289.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  290.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  291.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  292.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
  293.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
  294.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  295.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
  296.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
  297.  
  298.     PORT_START    /* IN1 */
  299.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  300.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  301.     PORT_BIT( 0x7C, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  302.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  303.  
  304.     PORT_START  /* DSW */
  305.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
  306.     PORT_DIPSETTING(    0x01, DEF_STR( Upright ))
  307.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  308.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) )
  309.     PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
  310.     PORT_DIPSETTING (   0x02, DEF_STR( 1C_2C ) )
  311.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  312.     PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
  313.     PORT_DIPSETTING (   0x04, DEF_STR( On ) )
  314.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  315.     PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
  316.     PORT_DIPSETTING (   0x08, DEF_STR( On ) )
  317.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
  318.     PORT_DIPSETTING (   0x00, "3" )
  319.     PORT_DIPSETTING (   0x10, "4" )
  320.     PORT_DIPSETTING (   0x20, "5" )
  321.     /* 0x30 gives 3 again */
  322.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  323.     PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
  324.     PORT_DIPSETTING (   0x40, DEF_STR( On ) )
  325.     PORT_DIPNAME( 0x80, 0x00, "RAM Test" )
  326.     PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
  327.     PORT_DIPSETTING (   0x80, DEF_STR( On ) )
  328.  
  329.     PORT_START  /* IN2 */
  330.     PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  331.     PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNUSED )
  332.     PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* connected to a counter - random number generator? */
  333. INPUT_PORTS_END
  334.  
  335. INPUT_PORTS_START( satansat )
  336.     PORT_START  /* IN0 */
  337.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  338.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  339.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  340.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
  341.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
  342.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  343.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  344.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
  345.  
  346.     PORT_START    /* IN1 */
  347.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  348.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  349.     PORT_BIT( 0x7C, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  350.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  351.  
  352.     PORT_START  /* DSW */
  353.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
  354.     PORT_DIPSETTING(    0x01, DEF_STR( Upright ))
  355.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  356.     PORT_DIPNAME( 0x0a, 0x00, DEF_STR( Coinage ) )
  357.     PORT_DIPSETTING (   0x08, DEF_STR( 2C_1C ) )
  358.     PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
  359.     PORT_DIPSETTING (   0x02, DEF_STR( 1C_2C ) )
  360.     /* 0x0a gives 2/1 again */
  361.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Bonus_Life ) )
  362.     PORT_DIPSETTING (   0x00, "5000" )
  363.     PORT_DIPSETTING (   0x04, "10000" )
  364.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
  365.     PORT_DIPSETTING (   0x00, "3" )
  366.     PORT_DIPSETTING (   0x10, "4" )
  367.     PORT_DIPSETTING (   0x20, "5" )
  368.     /* 0x30 gives 3 again */
  369.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  370.     PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
  371.     PORT_DIPSETTING (   0x40, DEF_STR( On ) )
  372.     PORT_DIPNAME( 0x80, 0x00, "RAM Test" )
  373.     PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
  374.     PORT_DIPSETTING (   0x80, DEF_STR( On ) )
  375.  
  376.     PORT_START  /* IN2 */
  377.     PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  378.     PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNUSED )
  379.     PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* connected to a counter - random number generator? */
  380. INPUT_PORTS_END
  381.  
  382. INPUT_PORTS_START( vanguard )
  383.     PORT_START    /* IN0 */
  384.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 )
  385.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 )
  386.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  387.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  388.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY)
  389.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY)
  390.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  391.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  392.  
  393.     PORT_START    /* IN1 */
  394.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_COCKTAIL )
  395.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_COCKTAIL )
  396.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
  397.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  398.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  399.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  400.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  401.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  402.  
  403.     PORT_START    /* DSW0 */
  404.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
  405.     PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
  406.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  407.     PORT_DIPNAME( 0x4e, 0x02, DEF_STR( Coinage ) )
  408.     PORT_DIPSETTING(    0x42, DEF_STR( 2C_1C ) )
  409.     PORT_DIPSETTING(    0x02, "1 Coin/1 Credit 2/3" )
  410.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
  411.     PORT_DIPSETTING(    0x48, "1 Coin/2 Credits 2/5" )
  412.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
  413.     PORT_DIPSETTING(    0x44, "1 Coin/3 Credits 2/7" )
  414.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
  415.     PORT_DIPSETTING(    0x4c, "1 Coin/6 Credits 2/13" )
  416.     PORT_DIPSETTING(    0x0c, DEF_STR( 1C_7C ) )
  417. /*
  418.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
  419.     PORT_DIPSETTING(    0x0a, DEF_STR( 1C_2C ) )
  420.     PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
  421.     PORT_DIPSETTING(    0x40, "1 Coin/1 Credit + Bonus" )
  422.     PORT_DIPSETTING(    0x46, "1 Coin/1 Credit + Bonus" )
  423.     PORT_DIPSETTING(    0x4a, "1 Coin/1 Credit + Bonus" )
  424.     PORT_DIPSETTING(    0x4e, "1 Coin/1 Credit + Bonus" )
  425. */
  426.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
  427.     PORT_DIPSETTING(    0x00, "3" )
  428.     PORT_DIPSETTING(    0x10, "4" )
  429.     PORT_DIPSETTING(    0x20, "5" )
  430. /*    PORT_DIPSETTING(    0x30, "3" ) */
  431.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  432.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  433.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  434.  
  435.     PORT_START    /* IN2 */
  436.     PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
  437.     PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  438.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  439.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  440.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  441.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  442.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
  443.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
  444. INPUT_PORTS_END
  445.  
  446. INPUT_PORTS_START( fantasy )
  447.     PORT_START    /* IN0 */
  448.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  449.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  450.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  451.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  452.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY)
  453.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY)
  454.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  455.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  456.  
  457.     PORT_START    /* IN1 */
  458.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  459.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  460.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  461.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  462.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  463.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  464.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  465.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  466.  
  467.     PORT_START    /* DSW0 */
  468.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
  469.     PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
  470.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  471.     PORT_DIPNAME( 0x4e, 0x02, DEF_STR( Coinage ) )
  472.     PORT_DIPSETTING(    0x42, DEF_STR( 2C_1C ) )
  473.     PORT_DIPSETTING(    0x02, "1 Coin/1 Credit 2/3" )
  474.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
  475.     PORT_DIPSETTING(    0x48, "1 Coin/2 Credits 2/5" )
  476.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
  477.     PORT_DIPSETTING(    0x44, "1 Coin/3 Credits 2/7" )
  478.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
  479.     PORT_DIPSETTING(    0x4c, "1 Coin/6 Credits 2/13" )
  480.     PORT_DIPSETTING(    0x0c, DEF_STR( 1C_7C ) )
  481. /*
  482.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
  483.     PORT_DIPSETTING(    0x0a, DEF_STR( 1C_2C ) )
  484.     PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
  485.     PORT_DIPSETTING(    0x40, "1 Coin/1 Credit + Bonus" )
  486.     PORT_DIPSETTING(    0x46, "1 Coin/1 Credit + Bonus" )
  487.     PORT_DIPSETTING(    0x4a, "1 Coin/1 Credit + Bonus" )
  488.     PORT_DIPSETTING(    0x4e, "1 Coin/1 Credit + Bonus" )
  489. */
  490.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
  491.     PORT_DIPSETTING(    0x00, "3" )
  492.     PORT_DIPSETTING(    0x10, "4" )
  493.     PORT_DIPSETTING(    0x20, "5" )
  494. /*    PORT_DIPSETTING(    0x30, "3" ) */
  495.     PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
  496.     PORT_DIPSETTING(    0x80, DEF_STR( No ) )
  497.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  498.  
  499.     PORT_START    /* IN2 */
  500.     PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
  501.     PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  502.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  503.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  504.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  505.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  506.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
  507.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
  508. INPUT_PORTS_END
  509.  
  510. INPUT_PORTS_START( pballoon )
  511.     PORT_START    /* IN0 */
  512.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  513.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  514.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  515.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  516.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY)
  517.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY)
  518.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  519.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  520.  
  521.     PORT_START    /* IN1 */
  522.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  523.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  524.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  525.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  526.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  527.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  528.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  529.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  530.  
  531.     PORT_START    /* DSW0 */
  532.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
  533.     PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
  534.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  535.     PORT_DIPNAME( 0x4e, 0x02, DEF_STR( Coinage ) )
  536.     PORT_DIPSETTING(    0x42, DEF_STR( 2C_1C ) )
  537.     PORT_DIPSETTING(    0x02, "1 Coin/1 Credit 2/3" )
  538.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
  539.     PORT_DIPSETTING(    0x48, "1 Coin/2 Credits 2/5" )
  540.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
  541.     PORT_DIPSETTING(    0x44, "1 Coin/3 Credits 2/7" )
  542.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
  543.     PORT_DIPSETTING(    0x4c, "1 Coin/6 Credits 2/11" )
  544.     PORT_DIPSETTING(    0x0c, DEF_STR( 1C_7C ) )
  545. /*
  546.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
  547.     PORT_DIPSETTING(    0x0a, DEF_STR( 1C_2C ) )
  548.     PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
  549.     PORT_DIPSETTING(    0x40, "1 Coin/1 Credit + Bonus" )
  550.     PORT_DIPSETTING(    0x46, "1 Coin/1 Credit + Bonus" )
  551.     PORT_DIPSETTING(    0x4a, "1 Coin/1 Credit + Bonus" )
  552.     PORT_DIPSETTING(    0x4e, "1 Coin/1 Credit + Bonus" )
  553. */
  554.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
  555.     PORT_DIPSETTING(    0x00, "3" )
  556.     PORT_DIPSETTING(    0x10, "4" )
  557.     PORT_DIPSETTING(    0x20, "5" )
  558. /*    PORT_DIPSETTING(    0x30, "3" ) */
  559.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  560.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  561.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  562.  
  563.     PORT_START    /* IN2 */
  564.     PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
  565.     PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  566.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  567.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  568.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  569.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  570.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
  571.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
  572. INPUT_PORTS_END
  573.  
  574. INPUT_PORTS_START( nibbler )
  575.     PORT_START    /* IN0 */
  576.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* Slow down */
  577.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* debug command? */
  578.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* debug command */
  579.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* debug command */
  580.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY)
  581.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY)
  582.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  583.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  584.  
  585.     PORT_START    /* IN1 */
  586.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* Pause */
  587.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* Unpause */
  588.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* End game */
  589.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* debug command */
  590.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  591.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  592.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  593.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  594.  
  595.     PORT_START    /* DSW0 */
  596.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  597.     PORT_DIPSETTING(    0x00, "3" )
  598.     PORT_DIPSETTING(    0x01, "4" )
  599.     PORT_DIPSETTING(    0x02, "5" )
  600.     PORT_DIPSETTING(    0x03, "6" )
  601.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) )
  602.     PORT_DIPSETTING(    0x00, "Easy" )
  603.     PORT_DIPSETTING(    0x04, "Hard" )
  604.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  605.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  606.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  607.     PORT_BITX(    0x10, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Rack Test", KEYCODE_F1, IP_JOY_NONE )
  608.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  609.     PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  610.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Free_Play ) )
  611.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  612.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  613.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Coinage ) )
  614.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  615.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  616.     PORT_DIPNAME( 0x80, 0x00, "Bonus Every 2 Credits" )
  617.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  618.     PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
  619.  
  620.     PORT_START    /* IN2 */
  621.     PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
  622.     PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  623.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  624.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  625.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  626.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  627.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
  628.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
  629. INPUT_PORTS_END
  630.  
  631.  
  632.  
  633. static struct GfxLayout swapcharlayout256 =
  634. {
  635.     8,8,    /* 8*8 characters */
  636.     256,    /* 256 characters */
  637.     2,      /* 2 bits per pixel */
  638.     { 256*8*8, 0 }, /* the two bitplanes are separated */
  639.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  640.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  641.     8*8     /* every char takes 8 consecutive bytes */
  642. };
  643. static struct GfxLayout charlayout256 =
  644. {
  645.     8,8,    /* 8*8 characters */
  646.     256,    /* 256 characters */
  647.     2,      /* 2 bits per pixel */
  648.     { 0, 256*8*8 }, /* the two bitplanes are separated */
  649.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  650.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  651.     8*8     /* every char takes 8 consecutive bytes */
  652. };
  653. static struct GfxLayout charlayout512 =
  654. {
  655.     8,8,    /* 8*8 characters */
  656.     512,    /* 512 characters */
  657.     2,    /* 2 bits per pixel */
  658.     { 0, 512*8*8 },    /* the two bitplanes are separated */
  659.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  660.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  661.     8*8    /* every char takes 8 consecutive bytes */
  662. };
  663.  
  664.  
  665.  
  666. static struct GfxDecodeInfo sasuke_gfxdecodeinfo[] =
  667. {
  668.     { 0,           0x1000, &swapcharlayout256,   0, 4 },    /* the game dynamically modifies this */
  669.     { REGION_GFX1, 0x0000, &swapcharlayout256, 4*4, 4 },
  670.     { -1 }
  671. };
  672.  
  673. static struct GfxDecodeInfo satansat_gfxdecodeinfo[] =
  674. {
  675.     { 0,           0x1000, &charlayout256,   0, 4 },    /* the game dynamically modifies this */
  676.     { REGION_GFX1, 0x0000, &charlayout256, 4*4, 4 },
  677.     { -1 }
  678. };
  679.  
  680. static struct GfxDecodeInfo vanguard_gfxdecodeinfo[] =
  681. {
  682.     { 0,           0x1000, &charlayout256,   0, 8 },    /* the game dynamically modifies this */
  683.     { REGION_GFX1, 0x0000, &charlayout256, 8*4, 8 },
  684.     { -1 } /* end of array */
  685. };
  686.  
  687. static struct GfxDecodeInfo fantasy_gfxdecodeinfo[] =
  688. {
  689.     { 0,           0x1000, &charlayout256,   0, 8 },    /* the game dynamically modifies this */
  690.     { REGION_GFX1, 0x0000, &charlayout512, 8*4, 8 },
  691.     { -1 } /* end of array */
  692. };
  693.  
  694.  
  695.  
  696. static struct CustomSound_interface custom_interface =
  697. {
  698.     rockola_sh_start,
  699.     0,
  700.     rockola_sh_update
  701. };
  702.  
  703.  
  704.  
  705. static struct MachineDriver machine_driver_sasuke =
  706. {
  707.     /* basic machine hardware */
  708.     {
  709.         {
  710.             CPU_M6502,
  711.             11289000/16,    /* 700 kHz */
  712.             satansat_readmem,sasuke_writemem,0,0,
  713.             satansat_interrupt,2
  714.         },
  715.     },
  716.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  717.     1,    /* single CPU, no need for interleaving */
  718.     0,
  719.  
  720.     /* video hardware */
  721.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  722.     sasuke_gfxdecodeinfo,
  723.     32,4*4 + 4*4,
  724.     satansat_vh_convert_color_prom,
  725.  
  726.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
  727.     0,
  728.     generic_vh_start,
  729.     generic_vh_stop,
  730.     satansat_vh_screenrefresh,
  731.  
  732.     /* sound hardware */
  733.     0,0,0,0
  734. };
  735.  
  736. static struct MachineDriver machine_driver_satansat =
  737. {
  738.     /* basic machine hardware */
  739.     {
  740.         {
  741.             CPU_M6502,
  742.             11289000/16,    /* 700 kHz */
  743.             satansat_readmem,satansat_writemem,0,0,
  744.             satansat_interrupt,2
  745.         },
  746.     },
  747.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  748.     1,    /* single CPU, no need for interleaving */
  749.     0,
  750.  
  751.     /* video hardware */
  752.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  753.     satansat_gfxdecodeinfo,
  754.     32,4*4 + 4*4,
  755.     satansat_vh_convert_color_prom,
  756.  
  757.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
  758.     0,
  759.     generic_vh_start,
  760.     generic_vh_stop,
  761.     satansat_vh_screenrefresh,
  762.  
  763.     /* sound hardware */
  764.     0,0,0,0,
  765.     {
  766.         {
  767.             SOUND_CUSTOM,
  768.             &custom_interface
  769.         }
  770.     }
  771. };
  772.  
  773. static struct MachineDriver machine_driver_vanguard =
  774. {
  775.     /* basic machine hardware */
  776.     {
  777.         {
  778.             CPU_M6502,
  779.             1000000,    /* 1 MHz??? */
  780.             vanguard_readmem,vanguard_writemem,0,0,
  781.             rockola_interrupt,2
  782.         }
  783.     },
  784.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  785.     1,    /* single CPU, no need for interleaving */
  786.     0,
  787.  
  788.     /* video hardware */
  789.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  790.     vanguard_gfxdecodeinfo,
  791.     64,16*4,
  792.     rockola_vh_convert_color_prom,
  793.  
  794.     VIDEO_TYPE_RASTER,
  795.     0,
  796.     generic_vh_start,
  797.     generic_vh_stop,
  798.     rockola_vh_screenrefresh,
  799.  
  800.     /* sound hardware */
  801.     0,0,0,0,
  802.     {
  803.         {
  804.             SOUND_CUSTOM,
  805.             &custom_interface
  806.         }
  807.     }
  808. };
  809.  
  810. static struct MachineDriver machine_driver_fantasy =
  811. {
  812.     /* basic machine hardware */
  813.     {
  814.         {
  815.             CPU_M6502,
  816.             1000000,    /* 1 MHz??? */
  817.             fantasy_readmem,fantasy_writemem,0,0,
  818.             rockola_interrupt,2
  819.         }
  820.     },
  821.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  822.     1,    /* single CPU, no need for interleaving */
  823.     0,
  824.  
  825.     /* video hardware */
  826.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  827.     fantasy_gfxdecodeinfo,
  828.     64,16*4,
  829.     rockola_vh_convert_color_prom,
  830.  
  831.     VIDEO_TYPE_RASTER,
  832.     0,
  833.     generic_vh_start,
  834.     generic_vh_stop,
  835.     rockola_vh_screenrefresh,
  836.  
  837.     /* sound hardware */
  838.     0,0,0,0,
  839.     {
  840.         {
  841.             SOUND_CUSTOM,
  842.             &custom_interface
  843.         }
  844.     }
  845. };
  846.  
  847. /* note that in this driver the visible area is different!!! */
  848. static struct MachineDriver machine_driver_pballoon =
  849. {
  850.     /* basic machine hardware */
  851.     {
  852.         {
  853.             CPU_M6502,
  854.             1000000,    /* 1 MHz??? */
  855.             pballoon_readmem,pballoon_writemem,0,0,
  856.             rockola_interrupt,2
  857.         }
  858.     },
  859.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  860.     1,    /* single CPU, no need for interleaving */
  861.     0,
  862.  
  863.     /* video hardware */
  864.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },    /* different from the others! */
  865.     fantasy_gfxdecodeinfo,
  866.     64,16*4,
  867.     rockola_vh_convert_color_prom,
  868.  
  869.     VIDEO_TYPE_RASTER,
  870.     0,
  871.     generic_vh_start,
  872.     generic_vh_stop,
  873.     rockola_vh_screenrefresh,
  874.  
  875.     /* sound hardware */
  876.     0,0,0,0,
  877.     {
  878.         {
  879.             SOUND_CUSTOM,
  880.             &custom_interface
  881.         }
  882.     }
  883. };
  884.  
  885.  
  886.  
  887. /***************************************************************************
  888.  
  889.   Game driver(s)
  890.  
  891. ***************************************************************************/
  892.  
  893. ROM_START( sasuke )
  894.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  895.     ROM_LOAD( "sc1",          0x4000, 0x0800, 0x34cbbe03 )
  896.     ROM_LOAD( "sc2",          0x4800, 0x0800, 0x38cc14f0 )
  897.     ROM_LOAD( "sc3",          0x5000, 0x0800, 0x54c41285 )
  898.     ROM_LOAD( "sc4",          0x5800, 0x0800, 0x23edafcf )
  899.     ROM_LOAD( "sc5",          0x6000, 0x0800, 0xca410e4f )
  900.     ROM_LOAD( "sc6",          0x6800, 0x0800, 0x80406afb )
  901.     ROM_LOAD( "sc7",          0x7000, 0x0800, 0x04d0f104 )
  902.     ROM_LOAD( "sc8",          0x7800, 0x0800, 0x0219104b )
  903.     ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
  904.     ROM_LOAD( "sc9",          0x8000, 0x0800, 0xd6ff889a )
  905.     ROM_LOAD( "sc10",         0x8800, 0x0800, 0x19df6b9a )
  906.     ROM_LOAD( "sc11",         0x9000, 0x0800, 0x24a0e121 )
  907.  
  908.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  909.     ROM_LOAD( "mcs_c",        0x0000, 0x0800, 0xaff9743d )
  910.     ROM_LOAD( "mcs_d",        0x0800, 0x0800, 0x9c805120 )
  911.  
  912.     ROM_REGION( 0x0020, REGION_PROMS )
  913.     ROM_LOAD( "sasuke.clr",   0x0000, 0x0020, 0xb70f34c1 )
  914.  
  915.     /* no sound ROMs - the sound section is entirely analog */
  916. ROM_END
  917.  
  918. ROM_START( satansat )
  919.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  920.     ROM_LOAD( "ss1",          0x4000, 0x0800, 0x549dd13a )
  921.     ROM_LOAD( "ss2",          0x4800, 0x0800, 0x04972fa8 )
  922.     ROM_LOAD( "ss3",          0x5000, 0x0800, 0x9caf9057 )
  923.     ROM_LOAD( "ss4",          0x5800, 0x0800, 0xe1bdcfe1 )
  924.     ROM_LOAD( "ss5",          0x6000, 0x0800, 0xd454de19 )
  925.     ROM_LOAD( "ss6",          0x6800, 0x0800, 0x7fbd5d30 )
  926.     ROM_LOAD( "zarz128.15",   0x7000, 0x0800, 0x93ea2df9 )
  927.     ROM_LOAD( "zarz129.16",   0x7800, 0x0800, 0xe67ec873 )
  928.     ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
  929.     ROM_LOAD( "zarz130.22",   0x8000, 0x0800, 0x22c44650 )
  930.     ROM_LOAD( "ss10",         0x8800, 0x0800, 0x8f1b313a )
  931.     ROM_LOAD( "ss11",         0x9000, 0x0800, 0xe74f98e0 )
  932.  
  933.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  934.     ROM_LOAD( "zarz135.73",   0x0000, 0x0800, 0xe837c62b )
  935.     ROM_LOAD( "zarz136.75",   0x0800, 0x0800, 0x83f61623 )
  936.  
  937.     ROM_REGION( 0x0020, REGION_PROMS )
  938.     ROM_LOAD( "zarz138.03",   0x0000, 0x0020, 0x5dd6933a )
  939.  
  940.     ROM_REGION( 0x1000, REGION_SOUND1 )  /* sound data for Vanguard-style audio section */
  941.     ROM_LOAD( "ss12",         0x0000, 0x0800, 0xdee01f24 )
  942.     ROM_LOAD( "zarz134.54",   0x0800, 0x0800, 0x580934d2 )
  943. ROM_END
  944.  
  945. ROM_START( zarzon )
  946.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  947.     ROM_LOAD( "zarz122.07",   0x4000, 0x0800, 0xbdfa67e2 )
  948.     ROM_LOAD( "zarz123.08",   0x4800, 0x0800, 0xd034e61e )
  949.     ROM_LOAD( "zarz124.09",   0x5000, 0x0800, 0x296397ea )
  950.     ROM_LOAD( "zarz125.10",   0x5800, 0x0800, 0x26dc5e66 )
  951.     ROM_LOAD( "zarz126.13",   0x6000, 0x0800, 0xcee18d7f )
  952.     ROM_LOAD( "zarz127.14",   0x6800, 0x0800, 0xbbd2cc0d )
  953.     ROM_LOAD( "zarz128.15",   0x7000, 0x0800, 0x93ea2df9 )
  954.     ROM_LOAD( "zarz129.16",   0x7800, 0x0800, 0xe67ec873 )
  955.     ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
  956.     ROM_LOAD( "zarz130.22",   0x8000, 0x0800, 0x22c44650 )
  957.     ROM_LOAD( "zarz131.23",   0x8800, 0x0800, 0x7be20678 )
  958.     ROM_LOAD( "zarz132.24",   0x9000, 0x0800, 0x72b2cb76 )
  959.  
  960.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  961.     ROM_LOAD( "zarz135.73",   0x0000, 0x0800, 0xe837c62b )
  962.     ROM_LOAD( "zarz136.75",   0x0800, 0x0800, 0x83f61623 )
  963.  
  964.     ROM_REGION( 0x0020, REGION_PROMS )
  965.     ROM_LOAD( "zarz138.03",   0x0000, 0x0020, 0x5dd6933a )
  966.  
  967.     ROM_REGION( 0x1000, REGION_SOUND1 )  /* sound data for Vanguard-style audio section */
  968.     ROM_LOAD( "zarz133.53",   0x0000, 0x0800, 0xb253cf78 )
  969.     ROM_LOAD( "zarz134.54",   0x0800, 0x0800, 0x580934d2 )
  970. ROM_END
  971.  
  972. ROM_START( vanguard )
  973.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  974.     ROM_LOAD( "sk4_ic07.bin", 0x4000, 0x1000, 0x6a29e354 )
  975.     ROM_LOAD( "sk4_ic08.bin", 0x5000, 0x1000, 0x302bba54 )
  976.     ROM_LOAD( "sk4_ic09.bin", 0x6000, 0x1000, 0x424755f6 )
  977.     ROM_LOAD( "sk4_ic10.bin", 0x7000, 0x1000, 0x54603274 )
  978.     ROM_LOAD( "sk4_ic13.bin", 0x8000, 0x1000, 0xfde157d0 )
  979.     ROM_RELOAD(               0xf000, 0x1000 )    /* for the reset and interrupt vectors */
  980.     ROM_LOAD( "sk4_ic14.bin", 0x9000, 0x1000, 0x0d5b47d0 )
  981.     ROM_LOAD( "sk4_ic15.bin", 0xa000, 0x1000, 0x8549b8f8 )
  982.     ROM_LOAD( "sk4_ic16.bin", 0xb000, 0x1000, 0x062e0be2 )
  983.  
  984.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  985.     ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, 0xe7d4315b )
  986.     ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, 0x96e87858 )
  987.  
  988.     ROM_REGION( 0x0040, REGION_PROMS )
  989.     ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, 0xad782a73 ) /* foreground colors */
  990.     ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, 0x7dc9d450 ) /* background colors */
  991.  
  992.     ROM_REGION( 0x1000, REGION_SOUND1 )    /* sound ROMs */
  993.     ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, 0xd2a64006 )  /* sound ROM 1 */
  994.     ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, 0xcc4a0b6f )  /* sound ROM 2 */
  995.  
  996.     ROM_REGION( 0x1800, REGION_SOUND2 )    /* space for the speech ROMs (not supported) */
  997.     ROM_LOAD( "sk6_ic07.bin", 0x0000, 0x0800, 0x2b7cbae9 )
  998.     ROM_LOAD( "sk6_ic08.bin", 0x0800, 0x0800, 0x3b7e9d7c )
  999.     ROM_LOAD( "sk6_ic11.bin", 0x1000, 0x0800, 0xc36df041 )
  1000. ROM_END
  1001.  
  1002. ROM_START( vangrdce )
  1003.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1004.     ROM_LOAD( "sk4_ic07.bin", 0x4000, 0x1000, 0x6a29e354 )
  1005.     ROM_LOAD( "sk4_ic08.bin", 0x5000, 0x1000, 0x302bba54 )
  1006.     ROM_LOAD( "sk4_ic09.bin", 0x6000, 0x1000, 0x424755f6 )
  1007.     ROM_LOAD( "4",            0x7000, 0x1000, 0x770f9714 )
  1008.     ROM_LOAD( "5",            0x8000, 0x1000, 0x3445cba6 )
  1009.     ROM_RELOAD(               0xf000, 0x1000 )    /* for the reset and interrupt vectors */
  1010.     ROM_LOAD( "sk4_ic14.bin", 0x9000, 0x1000, 0x0d5b47d0 )
  1011.     ROM_LOAD( "sk4_ic15.bin", 0xa000, 0x1000, 0x8549b8f8 )
  1012.     ROM_LOAD( "8",            0xb000, 0x1000, 0x4b825bc8 )
  1013.  
  1014.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1015.     ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, 0xe7d4315b )
  1016.     ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, 0x96e87858 )
  1017.  
  1018.     ROM_REGION( 0x0040, REGION_PROMS )
  1019.     ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, 0xad782a73 ) /* foreground colors */
  1020.     ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, 0x7dc9d450 ) /* background colors */
  1021.  
  1022.     ROM_REGION( 0x1000, REGION_SOUND1 )    /* sound ROMs */
  1023.     ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, 0xd2a64006 )  /* missing, using the SNK one */
  1024.     ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, 0xcc4a0b6f )  /* missing, using the SNK one */
  1025.  
  1026.     ROM_REGION( 0x1800, REGION_SOUND2 )    /* space for the speech ROMs (not supported) */
  1027.     ROM_LOAD( "sk6_ic07.bin", 0x0000, 0x0800, 0x2b7cbae9 )
  1028.     ROM_LOAD( "sk6_ic08.bin", 0x0800, 0x0800, 0x3b7e9d7c )
  1029.     ROM_LOAD( "sk6_ic11.bin", 0x1000, 0x0800, 0xc36df041 )
  1030. ROM_END
  1031.  
  1032. ROM_START( fantasy )
  1033.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1034.     ROM_LOAD( "ic12.cpu",        0x3000, 0x1000, 0x22cb2249 )
  1035.     ROM_LOAD( "ic07.cpu",        0x4000, 0x1000, 0x0e2880b6 )
  1036.     ROM_LOAD( "ic08.cpu",        0x5000, 0x1000, 0x4c331317 )
  1037.     ROM_LOAD( "ic09.cpu",        0x6000, 0x1000, 0x6ac1dbfc )
  1038.     ROM_LOAD( "ic10.cpu",        0x7000, 0x1000, 0xc796a406 )
  1039.     ROM_LOAD( "ic14.cpu",        0x8000, 0x1000, 0x6f1f0698 )
  1040.     ROM_RELOAD(                  0xf000, 0x1000 )    /* for the reset and interrupt vectors */
  1041.     ROM_LOAD( "ic15.cpu",        0x9000, 0x1000, 0x5534d57e )
  1042.     ROM_LOAD( "ic16.cpu",        0xa000, 0x1000, 0x6c2aeb6e )
  1043.     ROM_LOAD( "ic17.cpu",        0xb000, 0x1000, 0xf6aa5de1 )
  1044.  
  1045.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1046.     ROM_LOAD( "fs10ic50.bin",    0x0000, 0x1000, 0x86a801c3 )
  1047.     ROM_LOAD( "fs11ic51.bin",    0x1000, 0x1000, 0x9dfff71c )
  1048.  
  1049.     ROM_REGION( 0x0040, REGION_PROMS )
  1050.     ROM_LOAD( "fantasy.ic7",     0x0000, 0x0020, 0x361a5e99 ) /* foreground colors */
  1051.     ROM_LOAD( "fantasy.ic6",     0x0020, 0x0020, 0x33d974f7 ) /* background colors */
  1052.  
  1053.     ROM_REGION( 0x1800, REGION_SOUND1 )    /* sound ROMs */
  1054.     ROM_LOAD( "fs_b_51.bin",     0x0000, 0x0800, 0x48094ec5 )
  1055.     ROM_LOAD( "fs_a_52.bin",     0x0800, 0x0800, 0x1d0316e8 )
  1056.     ROM_LOAD( "fs_c_53.bin",     0x1000, 0x0800, 0x49fd4ae8 )
  1057.  
  1058.     ROM_REGION( 0x1800, REGION_SOUND2 )    /* space for the speech ROMs (not supported) */
  1059.     ROM_LOAD( "fs_d_7.bin",      0x0000, 0x0800, 0xa7ef4cc6 )
  1060.     ROM_LOAD( "fs_e_8.bin",      0x0800, 0x0800, 0x19b8fb3e )
  1061.     ROM_LOAD( "fs_f_11.bin",     0x1000, 0x0800, 0x3a352e1f )
  1062. ROM_END
  1063.  
  1064. ROM_START( fantasyj )
  1065.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1066.     ROM_LOAD( "fs5jic12.bin",    0x3000, 0x1000, 0xdd1eac89 )
  1067.     ROM_LOAD( "fs1jic7.bin",     0x4000, 0x1000, 0x7b8115ae )
  1068.     ROM_LOAD( "fs2jic8.bin",     0x5000, 0x1000, 0x61531dd1 )
  1069.     ROM_LOAD( "fs3jic9.bin",     0x6000, 0x1000, 0x36a12617 )
  1070.     ROM_LOAD( "fs4jic10.bin",    0x7000, 0x1000, 0xdbf7c347 )
  1071.     ROM_LOAD( "fs6jic14.bin",    0x8000, 0x1000, 0xbf59a33a )
  1072.     ROM_RELOAD(                  0xf000, 0x1000 )    /* for the reset and interrupt vectors */
  1073.     ROM_LOAD( "fs7jic15.bin",    0x9000, 0x1000, 0xcc18428e )
  1074.     ROM_LOAD( "fs8jic16.bin",    0xa000, 0x1000, 0xae5bf727 )
  1075.     ROM_LOAD( "fs9jic17.bin",    0xb000, 0x1000, 0xfa6903e2 )
  1076.  
  1077.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1078.     ROM_LOAD( "fs10ic50.bin",    0x0000, 0x1000, 0x86a801c3 )
  1079.     ROM_LOAD( "fs11ic51.bin",    0x1000, 0x1000, 0x9dfff71c )
  1080.  
  1081.     ROM_REGION( 0x0040, REGION_PROMS )
  1082.     ROM_LOAD( "prom-8.bpr",      0x0000, 0x0020, 0x1aa9285a ) /* foreground colors */
  1083.     ROM_LOAD( "prom-7.bpr",      0x0020, 0x0020, 0x7a6f7dc3 ) /* background colors */
  1084.  
  1085.     ROM_REGION( 0x1800, REGION_SOUND1 )    /* sound ROMs */
  1086.     ROM_LOAD( "fs_b_51.bin",     0x0000, 0x0800, 0x48094ec5 )
  1087.     ROM_LOAD( "fs_a_52.bin",     0x0800, 0x0800, 0x1d0316e8 )
  1088.     ROM_LOAD( "fs_c_53.bin",     0x1000, 0x0800, 0x49fd4ae8 )
  1089.  
  1090.     ROM_REGION( 0x1800, REGION_SOUND2 )    /* space for the speech ROMs (not supported) */
  1091.     ROM_LOAD( "fs_d_7.bin",      0x0000, 0x0800, 0xa7ef4cc6 )
  1092.     ROM_LOAD( "fs_e_8.bin",      0x0800, 0x0800, 0x19b8fb3e )
  1093.     ROM_LOAD( "fs_f_11.bin",     0x1000, 0x0800, 0x3a352e1f )
  1094. ROM_END
  1095.  
  1096. ROM_START( pballoon )
  1097.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  1098.     ROM_LOAD( "sk7_ic12.bin", 0x3000, 0x1000, 0xdfe2ae05 )
  1099.     ROM_LOAD( "sk7_ic07.bin", 0x4000, 0x1000, 0x736e67df )
  1100.     ROM_LOAD( "sk7_ic08.bin", 0x5000, 0x1000, 0x7a2032b2 )
  1101.     ROM_LOAD( "sk7_ic09.bin", 0x6000, 0x1000, 0x2d63cf3a )
  1102.     ROM_LOAD( "sk7_ic10.bin", 0x7000, 0x1000, 0x7b88cbd4 )
  1103.     ROM_LOAD( "sk7_ic14.bin", 0x8000, 0x1000, 0x6a8817a5 )
  1104.     ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
  1105.     ROM_LOAD( "sk7_ic15.bin", 0x9000, 0x1000, 0x1f78d814 )
  1106.  
  1107.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1108.     ROM_LOAD( "sk8_ic50.bin", 0x0000, 0x1000, 0x560df07f )
  1109.     ROM_LOAD( "sk8_ic51.bin", 0x1000, 0x1000, 0xd415de51 )
  1110.  
  1111.     ROM_REGION( 0x0040, REGION_PROMS )
  1112.     ROM_LOAD( "sk8_ic7.bin",  0x0000, 0x0020, 0xef6c82a0 ) /* foreground colors */
  1113.     ROM_LOAD( "sk8_ic6.bin",  0x0020, 0x0020, 0xeabc6a00 ) /* background colors */
  1114.  
  1115.     ROM_REGION( 0x1800, REGION_SOUND1 )    /* sound ROMs */
  1116.     ROM_LOAD( "sk7_ic51.bin", 0x0000, 0x0800, 0x0345f8b7 )
  1117.     ROM_LOAD( "sk7_ic52.bin", 0x0800, 0x0800, 0x5d6d68ea )
  1118.     ROM_LOAD( "sk7_ic53.bin", 0x1000, 0x0800, 0xa4c505cd )
  1119. ROM_END
  1120.  
  1121. ROM_START( nibbler )
  1122.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1123.     ROM_LOAD( "g960-52.12",   0x3000, 0x1000, 0xac6a802b )
  1124.     ROM_LOAD( "g960-48.07",   0x4000, 0x1000, 0x35971364 )
  1125.     ROM_LOAD( "g960-49.08",   0x5000, 0x1000, 0x6b33b806 )
  1126.     ROM_LOAD( "g960-50.09",   0x6000, 0x1000, 0x91a4f98d )
  1127.     ROM_LOAD( "g960-51.10",   0x7000, 0x1000, 0xa151d934 )
  1128.     ROM_LOAD( "g960-53.14",   0x8000, 0x1000, 0x063f05cc )
  1129.     ROM_RELOAD(               0xf000, 0x1000 )    /* for the reset and interrupt vectors */
  1130.     ROM_LOAD( "g960-54.15",   0x9000, 0x1000, 0x7205fb8d )
  1131.     ROM_LOAD( "g960-55.16",   0xa000, 0x1000, 0x4bb39815 )
  1132.     ROM_LOAD( "g960-56.17",   0xb000, 0x1000, 0xed680f19 )
  1133.  
  1134.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1135.     ROM_LOAD( "g960-57.50",   0x0000, 0x1000, 0x01d4d0c2 )
  1136.     ROM_LOAD( "g960-58.51",   0x1000, 0x1000, 0xfeff7faf )
  1137.  
  1138.     ROM_REGION( 0x0040, REGION_PROMS )
  1139.     ROM_LOAD( "g70805.ic7",   0x0000, 0x0020, 0xa5709ff3 ) /* foreground colors */
  1140.     ROM_LOAD( "g70804.ic6",   0x0020, 0x0020, 0xdacd592d ) /* background colors */
  1141.  
  1142.     ROM_REGION( 0x1800, REGION_SOUND1 )    /* sound ROMs */
  1143.     ROM_LOAD( "g959-43.51",   0x0000, 0x0800, 0x0345f8b7 )
  1144.     ROM_LOAD( "g959-44.52",   0x0800, 0x0800, 0x87d67dee )
  1145.     ROM_LOAD( "g959-45.53",   0x1000, 0x0800, 0x33189917 )
  1146. ROM_END
  1147.  
  1148. ROM_START( nibblera )
  1149.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1150.     ROM_LOAD( "ic12",         0x3000, 0x1000, 0x6dfa1be5 )
  1151.     ROM_LOAD( "ic07",         0x4000, 0x1000, 0x808e1a03 )
  1152.     ROM_LOAD( "ic08",         0x5000, 0x1000, 0x1571d4a2 )
  1153.     ROM_LOAD( "ic09",         0x6000, 0x1000, 0xa599df10 )
  1154.     ROM_LOAD( "ic10",         0x7000, 0x1000, 0xa6b5abe5 )
  1155.     ROM_LOAD( "ic14",         0x8000, 0x1000, 0x9f537185 )
  1156.     ROM_RELOAD(               0xf000, 0x1000 )    /* for the reset and interrupt vectors */
  1157.     ROM_LOAD( "g960-54.15",   0x9000, 0x1000, 0x7205fb8d )
  1158.     ROM_LOAD( "g960-55.16",   0xa000, 0x1000, 0x4bb39815 )
  1159.     ROM_LOAD( "g960-56.17",   0xb000, 0x1000, 0xed680f19 )
  1160.  
  1161.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1162.     ROM_LOAD( "g960-57.50",   0x0000, 0x1000, 0x01d4d0c2 )
  1163.     ROM_LOAD( "g960-58.51",   0x1000, 0x1000, 0xfeff7faf )
  1164.  
  1165.     ROM_REGION( 0x0040, REGION_PROMS )
  1166.     ROM_LOAD( "g70805.ic7",   0x0000, 0x0020, 0xa5709ff3 ) /* foreground colors */
  1167.     ROM_LOAD( "g70804.ic6",   0x0020, 0x0020, 0xdacd592d ) /* background colors */
  1168.  
  1169.     ROM_REGION( 0x1800, REGION_SOUND1 )    /* sound ROMs */
  1170.     ROM_LOAD( "g959-43.51",   0x0000, 0x0800, 0x0345f8b7 )
  1171.     ROM_LOAD( "g959-44.52",   0x0800, 0x0800, 0x87d67dee )
  1172.     ROM_LOAD( "g959-45.53",   0x1000, 0x0800, 0x33189917 )
  1173. ROM_END
  1174.  
  1175.  
  1176.  
  1177. GAMEX( 1980, sasuke,   0,        sasuke,   sasuke,   0, ROT90, "SNK", "Sasuke vs. Commander", GAME_NO_SOUND )
  1178. GAMEX( 1981, satansat, 0,        satansat, satansat, 0, ROT90, "SNK", "Satan of Saturn", GAME_IMPERFECT_SOUND )
  1179. GAMEX( 1981, zarzon,   satansat, satansat, satansat, 0, ROT90, "[SNK] (Taito America license)", "Zarzon", GAME_IMPERFECT_SOUND )
  1180. GAMEX( 1981, vanguard, 0,        vanguard, vanguard, 0, ROT90, "SNK", "Vanguard (SNK)", GAME_IMPERFECT_SOUND )
  1181. GAMEX( 1981, vangrdce, vanguard, vanguard, vanguard, 0, ROT90, "SNK (Centuri license)", "Vanguard (Centuri)", GAME_IMPERFECT_SOUND )
  1182. GAMEX( 1981, fantasy,  0,        fantasy,  fantasy,  0, ROT90, "[SNK] (Rock-ola license)", "Fantasy (US)", GAME_IMPERFECT_SOUND )
  1183. GAMEX( 1981, fantasyj, fantasy,  fantasy,  fantasy,  0, ROT90, "SNK", "Fantasy (Japan)", GAME_IMPERFECT_SOUND )
  1184. GAMEX( 1982, pballoon, 0,        pballoon, pballoon, 0, ROT90, "SNK", "Pioneer Balloon", GAME_IMPERFECT_SOUND )
  1185. GAMEX( 1982, nibbler,  0,        fantasy,  nibbler,  0, ROT90, "Rock-ola", "Nibbler (set 1)", GAME_IMPERFECT_SOUND )
  1186. GAMEX( 1982, nibblera, nibbler,  fantasy,  nibbler,  0, ROT90, "Rock-ola", "Nibbler (set 2)", GAME_IMPERFECT_SOUND )
  1187.